package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLRecoverableException;
import java.util.Scanner;

public class Top_AdminDelete {
	static Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static StringBuilder sb = new StringBuilder();
	static Scanner sc = new  Scanner(System.in);
	static String[] smt = { "순번", "ID", "이름", "연락처", "등록일자" };
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static boolean b = true;
	static String add = null;
	static String logId = Top_LoginMain.logIdVO;
	
	protected static void deleteAdmin() {
		while ( b ) {
			System.out.print("삭제하실 관리자 아이디를 입력하세요 : ");
			add = sc.next();
			if ( add.equals("admin") ) {
				System.err.println("admin 계정은 삭제하실수 없습니다. 다시 확인하시고 입력하세요");
			} else if ( add.equals( logId ) ) {
				System.err.println("현재 사용중인 계정은 삭제하실수 없습니다. 다시 확인하시고 입력하세요");
			} else { break; }
		}
		
		try {
			conn = Top_JDBC_Connection.openDataBase();
			pstmt = conn.prepareStatement(topsql.AdminSelectAll2SQL);
			pstmt.setString( 1, add );
			rs = pstmt.executeQuery();
			
			for ( int i = 0; i <= 4; ++i ) {
				sb.append( String.format( "%-18s", smt[i] ) );
			}
			sb.append("\n");
			int count = 1;
			while ( rs.next() ) {
				sb.append( String.format( "%-18s", count ++));
				for ( int j = 1; j <= 4; ++j ) {
					sb.append( String.format( "%-18s", rs.getString( j ) ) );
				}
				sb.append("\n");
			}
			System.out.println( sb.toString() );
		} catch ( SQLRecoverableException se ) {
			System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
			System.exit(0);
		} catch ( Exception e ) {
			e.printStackTrace();
		} finally {
			Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
		}
		
		while ( b ) {
			System.out.print("삭제하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				try {
					conn = Top_JDBC_Connection.openDataBase();
					pstmt = conn.prepareStatement(topsql.AdminDeleteSQL);
					pstmt.setString( 1, add );
					int count = pstmt.executeUpdate();
					System.err.println( add +" 님의 계정이 삭제 되었습니다.");
				} catch ( SQLRecoverableException se ) {
					System.err.println("데이터베이스 연결에 실패했습니다. 네트워크를 확인하세요. 시스템을 종료합니다.");
					System.exit(0);
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
				}
				b = false; break;
			case "N" : case "n" :
				System.err.println("관리자 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				Top_AdminMain.Top_AdminSubScreen();
				b = false; break;
			default :
				System.err.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("다른 사용자 계정을 삭제하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.err.println("다른 사용자 계정을 삭제합니다.");
				deleteAdmin();
				b = false; break;
			case "N" : case "n" :
				System.err.println("관리자 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				Top_AdminMain.Top_AdminSubScreen();
				b = false; break;
			default : 
				System.err.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}